home *** CD-ROM | disk | FTP | other *** search
- #include "stdio.h"
- #include "f2c.h"
- #define PAUSESIG 15
-
- #ifdef KR_headers
- #define Void /* void */
- #define Int /* int */
- #else
- #define Void void
- #define Int int
- #undef abs
- #undef min
- #undef max
- #include "stdlib.h"
- #include "signal.h"
- #ifdef __cplusplus
- extern "C" {
- #endif
- extern int getpid(void), isatty(int), pause(void);
- #endif
-
- extern VOID f_exit(Void);
-
- static VOID waitpause(Int n)
- {
- return;
- }
-
- #ifdef KR_headers
- int s_paus(s, n) char *s; ftnlen n;
- #else
- int s_paus(char *s, ftnlen n)
- #endif
- {
- int i;
-
- fprintf(stderr, "PAUSE ");
- if(n > 0)
- for(i = 0; i<n ; ++i)
- putc(*s++, stderr);
- fprintf(stderr, " statement executed\n");
- if( isatty(fileno(stdin)) )
- {
- fprintf(stderr, "To resume execution, type go. Any other input will terminate job.\n");
- fflush(stderr);
- if( getchar()!='g' || getchar()!='o' || getchar()!='\n' )
- {
- fprintf(stderr, "STOP\n");
- #ifdef NO_ONEXIT
- f_exit();
- #endif
- exit(0);
- }
- }
- else
- {
- fprintf(stderr, "To resume execution, execute a kill -%d %d command\n",
- PAUSESIG, getpid() );
- signal(PAUSESIG, waitpause);
- fflush(stderr);
- pause();
- }
- fprintf(stderr, "Execution resumes after PAUSE.\n");
- #ifdef __cplusplus
- return 0; /* NOT REACHED */
- }
- #endif
- }
-